uint32_t domid, int fd)
{
libxl__gc gc = LIBXL_INIT_GC(ctx);
- int hvm = LIBXL__DOMAIN_IS_TYPE(&gc, domid, HVM);
+ libxl_domain_type type = libxl__domain_type(&gc, domid);
int live = info != NULL && info->flags & XL_SUSPEND_LIVE;
int debug = info != NULL && info->flags & XL_SUSPEND_DEBUG;
int rc = 0;
- rc = libxl__domain_suspend_common(&gc, domid, fd, hvm, live, debug);
- if (!rc && hvm)
+ rc = libxl__domain_suspend_common(&gc, domid, fd, type, live, debug);
+ if (!rc && type == LIBXL_DOMAIN_TYPE_HVM)
rc = libxl__domain_save_device_model(&gc, domid, fd);
libxl__free_all(&gc);
return rc;
}
int libxl__domain_suspend_common(libxl__gc *gc, uint32_t domid, int fd,
- int hvm, int live, int debug)
+ libxl_domain_type type,
+ int live, int debug)
{
libxl_ctx *ctx = libxl__gc_owner(gc);
int flags;
int port;
struct save_callbacks callbacks;
struct suspendinfo si;
- int rc = ERROR_FAIL;
+ int hvm, rc = ERROR_FAIL;
+
+ switch (type) {
+ case LIBXL_DOMAIN_TYPE_HVM:
+ hvm = 1;
+ break;
+ case LIBXL_DOMAIN_TYPE_PV:
+ hvm = 0;
+ break;
+ default:
+ return ERROR_INVAL;
+ }
flags = (live) ? XCFLAGS_LIVE : 0
| (debug) ? XCFLAGS_DEBUG : 0
libxl_domain_build_info *info,
libxl__domain_build_state *state,
int fd);
-_hidden int libxl__domain_suspend_common(libxl__gc *gc, uint32_t domid, int fd, int hvm, int live, int debug);
+_hidden int libxl__domain_suspend_common(libxl__gc *gc, uint32_t domid, int fd,
+ libxl_domain_type type,
+ int live, int debug);
_hidden int libxl__domain_save_device_model(libxl__gc *gc, uint32_t domid, int fd);
_hidden void libxl__userdata_destroyall(libxl__gc *gc, uint32_t domid);